/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.easoft.code.pos.data.pojos;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Eliu
 */
@Entity
@Table(name = "pos_caja_movimiento")
@NamedQueries({
    @NamedQuery(name = "PosCajaMovimiento.findAll", query = "SELECT p FROM PosCajaMovimiento p"),
    @NamedQuery(name = "PosCajaMovimiento.findById", query = "SELECT p FROM PosCajaMovimiento p WHERE p.id = :id"),
    @NamedQuery(name = "PosCajaMovimiento.findByTipoOperacion", query = "SELECT p FROM PosCajaMovimiento p WHERE p.tipoOperacion = :tipoOperacion"),
    @NamedQuery(name = "PosCajaMovimiento.findByTipoDocumento", query = "SELECT p FROM PosCajaMovimiento p WHERE p.tipoDocumento = :tipoDocumento"),
    @NamedQuery(name = "PosCajaMovimiento.findByNoDocumento", query = "SELECT p FROM PosCajaMovimiento p WHERE p.noDocumento = :noDocumento"),
    @NamedQuery(name = "PosCajaMovimiento.findByFecha", query = "SELECT p FROM PosCajaMovimiento p WHERE p.fecha = :fecha"),
    @NamedQuery(name = "PosCajaMovimiento.findByEfectivo", query = "SELECT p FROM PosCajaMovimiento p WHERE p.efectivo = :efectivo"),
    @NamedQuery(name = "PosCajaMovimiento.findByTarjeta", query = "SELECT p FROM PosCajaMovimiento p WHERE p.tarjeta = :tarjeta"),
    @NamedQuery(name = "PosCajaMovimiento.findByCredito", query = "SELECT p FROM PosCajaMovimiento p WHERE p.credito = :credito"),
    @NamedQuery(name = "PosCajaMovimiento.findByCheque", query = "SELECT p FROM PosCajaMovimiento p WHERE p.cheque = :cheque"),
    @NamedQuery(name = "PosCajaMovimiento.findByCambio", query = "SELECT p FROM PosCajaMovimiento p WHERE p.cambio = :cambio"),
    @NamedQuery(name = "PosCajaMovimiento.findByTotal", query = "SELECT p FROM PosCajaMovimiento p WHERE p.total = :total"),
    @NamedQuery(name = "PosCajaMovimiento.findByEstado", query = "SELECT p FROM PosCajaMovimiento p WHERE p.estado = :estado")})
public class PosCajaMovimiento implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Integer id;
    @Column(name = "tipo_operacion")
    private Integer tipoOperacion;
    @Basic(optional = false)
    @Column(name = "tipo_documento", nullable = false, length = 10)
    private String tipoDocumento;
    @Basic(optional = false)
    @Column(name = "no_documento", nullable = false, length = 20)
    private String noDocumento;
    @Column(name = "fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "efectivo", precision = 12)
    private Float efectivo;
    @Column(name = "tarjeta", precision = 12)
    private Float tarjeta;
    @Column(name = "credito", precision = 12)
    private Float credito;
    @Column(name = "cheque", precision = 12)
    private Float cheque;
    @Column(name = "cambio", precision = 12)
    private Float cambio;
    @Basic(optional = false)
    @Column(name = "total", nullable = false)
    private float total;
    @Column(name = "estado")
    private Integer estado;
    @JoinColumn(name = "periodo_operacion", referencedColumnName = "id", nullable = false)
    @ManyToOne(optional = false)
    private PosPeriodoOperacion periodoOperacion;
    @JoinColumn(name = "pos_usuario_autoriza", referencedColumnName = "usuario", nullable = false)
    @ManyToOne(optional = false)
    private PosUsuario posUsuarioAutoriza;

    public PosCajaMovimiento() {
    }

    public PosCajaMovimiento(Integer id) {
        this.id = id;
    }

    public PosCajaMovimiento(Integer id, String tipoDocumento, String noDocumento, float total) {
        this.id = id;
        this.tipoDocumento = tipoDocumento;
        this.noDocumento = noDocumento;
        this.total = total;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getTipoOperacion() {
        return tipoOperacion;
    }

    public void setTipoOperacion(Integer tipoOperacion) {
        this.tipoOperacion = tipoOperacion;
    }

    public String getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public String getNoDocumento() {
        return noDocumento;
    }

    public void setNoDocumento(String noDocumento) {
        this.noDocumento = noDocumento;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Float getEfectivo() {
        return efectivo;
    }

    public void setEfectivo(Float efectivo) {
        this.efectivo = efectivo;
    }

    public Float getTarjeta() {
        return tarjeta;
    }

    public void setTarjeta(Float tarjeta) {
        this.tarjeta = tarjeta;
    }

    public Float getCredito() {
        return credito;
    }

    public void setCredito(Float credito) {
        this.credito = credito;
    }

    public Float getCheque() {
        return cheque;
    }

    public void setCheque(Float cheque) {
        this.cheque = cheque;
    }

    public Float getCambio() {
        return cambio;
    }

    public void setCambio(Float cambio) {
        this.cambio = cambio;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    public Integer getEstado() {
        return estado;
    }

    public void setEstado(Integer estado) {
        this.estado = estado;
    }

    public PosPeriodoOperacion getPeriodoOperacion() {
        return periodoOperacion;
    }

    public void setPeriodoOperacion(PosPeriodoOperacion periodoOperacion) {
        this.periodoOperacion = periodoOperacion;
    }

    public PosUsuario getPosUsuarioAutoriza() {
        return posUsuarioAutoriza;
    }

    public void setPosUsuarioAutoriza(PosUsuario posUsuarioAutoriza) {
        this.posUsuarioAutoriza = posUsuarioAutoriza;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PosCajaMovimiento)) {
            return false;
        }
        PosCajaMovimiento other = (PosCajaMovimiento) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.easoft.code.pos.data.pojos.PosCajaMovimiento[ id=" + id + " ]";
    }

}
